import corejuliano.gameelement.agent.*;
import corejuliano.designpattern.observer.*;
import corejuliano.designpattern.mvc.*;
import corejuliano.*;

import rocknrollracing.gameelement.agent.*;

class corejuliano.ai.Intelligence implements Observer
{
	//private var owner:Agent;
	private var owner:Controller;
	//COM CERTEZA REVER ISSO
	//ou baixar o setOwner para as classes extendidas
	// ou aceitar um tipo mais primitivo de objeto
	
	public function Intelligence()
	{
						
	}
	
	public function update(event:String, observable:Observable):Void
	{
		//faco cast, pois tenho dois tipos de agents
		// um e do tipo agentpixel e o outro e do tipo agent
		//assim nao preciso ter duas classes para manipular a mesma coisa 
		// so por causa do tipo de objeto
		if (owner instanceof Agent)
		{		
			if((Controller(observable)).getModel() == Agent(owner).getModel())
				if (GameManager.UPDATE_LOGIC == event)
					updateLogic();
		}
		else if (owner instanceof AgentPixel)
		{
			if((Controller(observable)).getModel() == AgentPixel(owner).getModel())
				if (GameManager.UPDATE_LOGIC == event)
					updateLogic();	
		}
	}
	
	public function updateLogic():Void
	{
		
	}
	
	public function setOwner(owner:Controller):Void
	{
		this.owner = owner;
	}
	
	public function getOwner():Controller
	{
		return owner;	
	}
	
	public function destroy()
	{
		owner = null;
	}
	
	public function toString():String
	{
		return "corejuliano.gameelement.agent.ai.Inelligence";
	}

}